<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
	</script>
</head>

<body>
	<button id="btn">点击获取数据</button>


	<!--generator-yield方法-->
	<script>
		function sendAJAX(url) {
			return new Promise((resolve, reject) => {
				$.ajax({
					url: url,
					success(arr) {
						resolve(arr);
					},
					error(err) {
						reject(err);
					}
				})
			});
		}
		/*此函数使用 jQuery 的 AJAX 方法向指定的对象发出异步请求并返回 promise。promise 在成功时使用响应数据 （） 进行解析，并在失败时以错误拒绝。urlarr*/
		let btn = document.querySelector('#btn');
		function* getData() {
			try {
				let data1 = yield sendAJAX('http://59.65.232.233:5080/api_1_0/ssoUser/2023101916543597');
				let data2 = yield sendAJAX('http://59.65.232.233:5080/api_1_0/ssoUser/2023103116255631');
			} catch (error) {
				console.error(error);
			}
		}
		/*此生成器函数被定义为生成两个异步 AJAX 请求的结果。如果在任何请求期间发生错误，则会捕获并记录该错误。getData*/
		btn.addEventListener('click', function () {
			// 创建生成器对象
			const generator = getData();// Create a generator object
			var d1 = generator.next();// Start the first AJAX request
			var d2 = generator.next();// Start the second AJAX request
			d1.value.then(
				(result) => {
					console.log('Result:', result);
				}
			);

			d2.value.then(
				(result) => {
					console.log('Result:', result);
				}
			)
		});
		/*当单击带有 ID 的按钮时，它会触发生成器功能。生成器是手动迭代的，用于启动异步请求。然后，当承诺得到解决时，将记录结果。btngenerator.next()*/

        /*async await方法*/
		/*
		btn.addEventListener('click', async function ()
		添加了一个点击事件监听器，当与按钮相关联的事件触发时，将执行后面的异步函数。
		({
			let data1 = await sendAJAX('http://59.65.232.233:5080/api_1_0/ssoUser/2023101916543597');
			let data2 = await sendAJAX('http://59.65.232.233:5080/api_1_0/ssoUser/2023103116255631');
			这一行使用了关键字，表明函数返回的是一个Promise。 函数用于发送异步HTTP请求，等待该请求的结果。
			具体的请求目标是 。 一旦请求完成，返回的数据将被分配给变量。
			console.log(data1, data2);
		})
		*/
		/*promise.all方法*/
		/*
		let p1 = new Promise(function (resolve, reject) {
			$.ajax({
				url: 'http://59.65.232.233:5080/api_1_0/ssoUser/2023101916543597',
				dataType: 'json',
				success(arr) {
					resolve(arr);
				},
				error(err) {
					reject(err);
				}
			})
		});
		let p2 = new Promise(function (resolve, reject) {
			$.ajax({
				url: 'http://59.65.232.233:5080/api_1_0/ssoUser/2023103116255631',
				dataType: 'json',
				success(arr) {
					resolve(arr);
				},
				error(err) {
					reject(err);
				}
			})
		});
		创建了一个Promise对象，其中包含了一个使用jQuery的方法的异步操作。 
		这个操作向  发送HTTP请求。 如果请求成功，将调用，将作为Promise的解决值； 
		如果请求失败，将调用，将作为Promise的拒绝原因。
		Promise.all([
			p1,
			p2
		]).then(function (results) {
			console.log(results);
		}, 
		使用方法，它接收一个包含多个Promise对象的数组，等待所有的Promise对象都完成。 
		当所有的Promise对象都成功完成时，将调用中的第一个回调函数，传递一个包含所有Promise解决值的数组。 
		如果其中有任何一个Promise对象被拒绝，将调用中的第二个回调函数。
		如果所有的Promise都成功解决，将打印数组到控制台； 
		如果有任何一个Promise被拒绝，将打印错误消息到控制台。
		function () {
			console.log("错误");
		});
		*/
	</script>
</body>

</html>